/**
 * 
 */
package com.yidu.springbootdemo.permission.service;

import com.github.pagehelper.PageHelper;
import com.yidu.springbootdemo.permission.action.vo.TmoduleVo;
import com.yidu.springbootdemo.permission.dao.TmoduleMapper;
import com.yidu.springbootdemo.permission.domain.Tmodule;
import com.yidu.springbootdemo.permission.tools.Pages;
import com.yidu.utils.RedisUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
import java.util.*;

/**
 *	类的描述：	模块service接口实现类
 * @author HJJ
 * @date 2019年9月25日 下午3:25:11
 */
@Service
public class TmoduleServiceImp implements TmoduleService {
	@Resource
	TmoduleMapper tmodulemapper;

	@Resource
	RedisUtil redisUtil ;

	@Override
	public void add(TmoduleVo tom) {
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(tom, mod1);
		tmodulemapper.insertSelective(mod1);
		//删除缓存
		redisUtil.deleteByPrex("oursModule_");
	}

	@Override
	public void delete(String chaID) {
	}

	@Override
	public void update(TmoduleVo tom) {
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(tom, mod1);
		tmodulemapper.updateByPrimaryKeySelective(mod1);
		//删除缓存
		redisUtil.deleteByPrex("oursModule_");
	}

	@Override
	public List<TmoduleVo> findAll(TmoduleVo tch) {
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(tch, mod1);
		List<Tmodule> list = tmodulemapper.findAll(mod1);
		List<TmoduleVo> list2 = new ArrayList<TmoduleVo>();
		for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
			Tmodule tmodule = (Tmodule) iterator.next();
			TmoduleVo tch2 = new TmoduleVo();
			BeanUtils.copyProperties(tmodule, tch2);
			list2.add(tch2);
		}
		return list2;
	}

	@Override
	public TmoduleVo findByID(String chaID) {

		Tmodule tmo = tmodulemapper.findByID(chaID);
		TmoduleVo vo = new TmoduleVo();
		BeanUtils.copyProperties(tmo, vo);
		return vo;
	}

	@Override
	public List<TmoduleVo> findAll2(TmoduleVo tch, Pages pages1) {
		PageHelper.offsetPage(pages1.getStartRows(), pages1.getLimit());
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(tch, mod1);
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("tch", tch);
		map.put("pages", pages1);
		List<Tmodule> list = tmodulemapper.findAll2(map);
		List<TmoduleVo> list2 = new ArrayList<TmoduleVo>();
		for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
			Tmodule tmodule = (Tmodule) iterator.next();
			TmoduleVo tch2 = new TmoduleVo();
			BeanUtils.copyProperties(tmodule, tch2);
			list2.add(tch2);
		}
		PageHelper.startPage(pages1.getStartRows(), pages1.getLimit());
		return list2;
	}

	@Override
	public int count(TmoduleVo mod) {
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(mod, mod1);
		return tmodulemapper.count(mod1);
	}

	@Override
	public void update1(TmoduleVo tom) {
		Tmodule mod1 = new Tmodule();
		BeanUtils.copyProperties(tom, mod1);
		tmodulemapper.updateByttModId(mod1);
		tmodulemapper.updateByPrimaryKeySelective(mod1);
	}

	@Override
	public List<TmoduleVo> findByUser(String userName, String password) {
		Map<String, Object> map = new HashMap<>();
		map.put("userName", userName);
		map.put("userPassword", password);
		//如果有缓存,则从缓存里面去找
		List<Tmodule> list = (List)redisUtil.get("oursModule_"+userName);
		if(CollectionUtils.isEmpty(list)){
			list = tmodulemapper.findByUser(map);
			redisUtil.set("oursModule_"+userName,list);
		}
		List<TmoduleVo> list2 = new ArrayList<TmoduleVo>();
		for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
			Tmodule tmodule = (Tmodule) iterator.next();
			TmoduleVo tch2 = new TmoduleVo();
			BeanUtils.copyProperties(tmodule, tch2);
			list2.add(tch2);
		}
		return list2;
	}


}